thin.define(function(expoers) {
    // 队列
    function Queue(callback) {
        this.arr = [];
        this.callback = callback || new Function('');
    }

    // 队列 -- 添加
    Queue.prototype.add = function(fn) {
        var self = this;
        self.arr.push(fn);
    }

    // 队列 -- 运行
    Queue.prototype.run = function() {
        var self = this;
        if(self.arr.length <= 0) {
            self.callback();
			self.callback = null;
            return;
        }
        var fn = self.arr[0];
        fn(function() {
            // 删除第一个数组
            self.arr.splice(0, 1);
            // 递归执行
            self.run();
        });
    }

    // 队列 -- 中止
    Queue.prototype.abort = function() {
        var self = this;
        self.arr = [];
        self.callback();
		self.callback = null;
    }

    expoers('Queue', Queue);
});